package com.yc.cloud.admin.service;

import com.yc.cloud.common.orm.CommonPage;
import com.yc.cloud.common.basic.dto.BasePageReqDTO;
import com.yc.cloud.admin.dto.request.AlgModelVersionCreateReqDTO;
import com.yc.cloud.admin.dto.request.AlgModelVersionQueryReqDTO;
import com.yc.cloud.admin.dto.request.AlgModelVersionUpdateReqDTO;
import com.yc.cloud.admin.vo.AlgModelVersionVo;
import com.yc.cloud.entity.AlgModelVersion;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 算法模型版本表 服务类
 * </p>
 *
 * @author kinggu
 * @since 2025-07-11
 */
public interface AlgModelVersionService extends IService<AlgModelVersion> {

    boolean create(AlgModelVersionCreateReqDTO createReqDTO);

    boolean update(AlgModelVersionUpdateReqDTO updateReqDTO);

    Boolean publish(Long id);

    Boolean unpublish(Long id);

    /**
     * 分页查询模型版本列表
     * @param pageReqDTO 基础分页参数
     * @return 分页结果
     * @deprecated 使用 {@link #list(AlgModelVersionQueryReqDTO)} 代替
     */
    @Deprecated
    CommonPage<AlgModelVersionVo> list(BasePageReqDTO pageReqDTO);
    
    /**
     * 分页查询模型版本列表，支持按算法ID和模型ID筛选
     * @param queryReqDTO 查询参数
     * @return 分页结果
     */
    CommonPage<AlgModelVersionVo> list(AlgModelVersionQueryReqDTO queryReqDTO);

    AlgModelVersionVo getVOById(Long id);

    List<AlgModelVersionVo> convertToVoList(List<AlgModelVersion> entityList);

    AlgModelVersion get(Long id);

    boolean delete(Long id);

    /**
     * 根据模型ID获取已发布的版本信息
     * @param modelId 模型ID
     * @return 已发布的版本VO
     */
    AlgModelVersionVo getPublishedVersionByModelId(Long modelId);
} 